<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Validator;
use Hash;
use Auth;
class PasswordRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    //修改权限
    public function authorize()
    {
        //3.1
        return true;
    }



    //自定义的验证规则
    public function CustomRules(){
        //3.3
        //第一个参数：自定义验证规则的名称
        //第二个参数：回调函数
        //回调函数中的参数：
        //$attribute:验证的字段
        //$value,验证字段名称的值
        //$parameters,传入验证规则数组
        //$validator ：validator的实例
        Validator::extend('check_password',function ($attribute,$value,$parameters,$validator
        ){
            //验证输入的旧密码和当前登录的密码是否相同，如果不相同返回假,如果相同返回真
            //check(被检测的值，检测第一个参数和什么相同)
            return Hash::check($value,Auth::user()->password);

        });

    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        //3.6调用自定义验证方法
        $this->CustomRules();
        //3.2
        return [
           //如果使用了nullable验证方法,被验证的字段如果没有填,就不会去使用后面的验证规则进行验证,但是如果一旦填写了,就必须满足后面的验证规则
            'name' => 'required',
            'oldpassword' => 'required|check_password',
            'password' => 'nullable|between:6,20|confirmed',
            'password_confirmation' => 'nullable|between:6,20',

        ];
    }


    //错误提示
    public function messages()
    {
        //3.4
        return [
           'oldpassword.check_password' => '旧密码输入错误',
        ];
    }


}
